﻿using System;
using System.Windows.Controls.Primitives;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using produccion.clases;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;
using produccion.vistamodelo;
using produccion.reportes;


namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para frmMaeEst.xaml
    /// </summary>
    public partial class frmMaeEst : Window
    {
        CLSMAEPRO MaePro = new CLSMAEPRO();
        CLSMAEREF MaeRef = new CLSMAEREF();
        CLSMAEREFP MaeRefp = new CLSMAEREFP();
        CLSMAEEST MaeEst = new CLSMAEEST();
        CLSMAEMAT MaeMat = new CLSMAEMAT();
        CLSMAEMTP MaeMtp = new CLSMAEMTP();
        CLSENCUNI Uni = new CLSENCUNI();
        DataTable Tallas = new DataTable();
        DataTable dtEst = new DataTable();

        String StrCodigoPrimerColorReferencia;//FJRF - Esta variable se usa para guardar el primer color que tenga la imagen por si hay mas colores y no tiene imagen poner esta
        MDOgeneral MdoGeneral = new MDOgeneral();//FJRF - Traemos todas las funciones de Mdogeneral
        DataTable DtConsulta;//FJRF - Para realizar consutas
        public frmMaeEst()
        {
            InitializeComponent();
        }

        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void btnCopiar_Click(object sender, RoutedEventArgs e)
        {
            if (txtCodRef.Text == "")
            {
                return;
            }
            expCopiar.IsEnabled = true;
        }

        private void LimpiarControles()
        {
            cbColor.Items.Clear();
            cbColorCop.Items.Clear();
            txtNombreRef.Text = "";
            txtNomRefCop.Text = "";
            Tallas.Clear();
            dtEst.Clear();
            dgEst.ItemsSource = null;
            imgFoto.Source = null;
            txtCodRefCop.Text = "";
        }

        private void txtCodRef_TextChanged(object sender, TextChangedEventArgs e)
        {
            DataTable dt = new DataTable();
            if (txtCodRef.Text.Length < 4)
            {
                LimpiarControles();
                return;
            }
            MaeRefp.CODREF_REF = txtCodRef.Text;
            if (MaeRefp.existe() == false)
            {
                FRMBuscarCol frm = new FRMBuscarCol();
                frm.RequiereColor = false;
                frm.EsReferencia = true;
                frm.txtNombre.Text = txtCodRef.Text;
                frm.btnAceptar.Visibility = Visibility.Visible;
                frm.ShowDialog();
                txtCodRef.Text = frm.Retorno;
            }
            MaeRef.CODREF_REF = txtCodRef.Text;
            MaeRef.Consultar();
            txtNombreRef.Text = MaeRef.NOMREF_REF;
            MaePro.CODREF_PRO = txtCodRef.Text;
            dt = MaePro.BuscarColor();

            PonerImagen(MaePro.CODREF_PRO, "", txtNombreRef.Text);

            if (dt.Rows.Count == 0)
            {
                MessageBox.Show("La referencia no tiene colores disponibles!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                txtCodRef.Text = "";
                return;
            }
            cbColor.Items.Clear();
            Boolean BooHayColores = false;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                cbColor.Items.Add(dt.Rows[i][0].ToString() + "-" + dt.Rows[i][1].ToString());
                BooHayColores = true;
            }
            if (BooHayColores == true)
            {
                cbColor.SelectedIndex = 0;
                StrCodigoPrimerColorReferencia = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedValue.ToString(), "-", "Codigo");
                PrivV_BuscarDatosReferencia(StrCodigoPrimerColorReferencia);//FJRF - se buscan los datos de la referencia enviando el codigo del color
            }
        }

        #region FJRF - PonerFoto

        private void PonerImagen(string strCodigoReferencia, string strCodigoColor, string strNombreReferencia)
        {
            if (String.IsNullOrEmpty(strCodigoColor))
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg");
                    b.EndInit();
                    imgFoto.Stretch = Stretch.Fill;
                    imgFoto.Source = b;
                    ImagenTooltip.Source = b;
                    txbNombreImagen.Text = strNombreReferencia;
                }
                else
                {
                    imgFoto.Source = null;
                }
            }
            else
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg");
                    b.EndInit();
                    imgFoto.Stretch = Stretch.Fill;
                    imgFoto.Source = b;
                    ImagenTooltip.Source = b;
                    txbNombreImagen.Text = strNombreReferencia;
                }
                else
                {
                    if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg"))
                    {
                        b.BeginInit();
                        b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg");
                        b.EndInit();
                        imgFoto.Stretch = Stretch.Fill;
                        imgFoto.Source = b;
                        ImagenTooltip.Source = b;
                        txbNombreImagen.Text = strNombreReferencia;
                    }
                    else
                    {
                        Boolean BooExiste = false;
                        //Foto para cualquier color-Consultar colores para referencia
                        clases.CLSMAEPRO mae = new clases.CLSMAEPRO { CODREF_PRO = strCodigoReferencia };
                        DataTable val = mae.BuscarColor();

                        foreach (DataRow r in val.Rows)
                        {
                            if (!String.IsNullOrEmpty(r["Codigo"].ToString()))
                            {
                                string StrRuta = MDOgeneral.Fotos_BOSI + strCodigoReferencia + r["Codigo"].ToString() + ".jpg";
                                if (File.Exists(StrRuta))
                                {

                                    BitmapImage BitFoto = new BitmapImage();
                                    BitFoto.BeginInit();
                                    BitFoto.UriSource = new Uri(StrRuta);
                                    BitFoto.EndInit();
                                    imgFoto.Source = BitFoto;
                                    ImagenTooltip.Source = BitFoto;
                                    txbNombreImagen.Text = strNombreReferencia;

                                    BooExiste = true;

                                    break;//FJRF - Si la encontro nos salimos
                                }
                            }
                        }

                        if (BooExiste == false)
                        {
                            imgFoto.Source = null;
                        }
                    }
                }
            }
        }

        #endregion

        private void txtCodRefCop_TextChanged(object sender, TextChangedEventArgs e)
        {
            DataTable dt = new DataTable();
            if (txtCodRefCop.Text.Length < 4)
            {
                txtNomRefCop.Text = "";
                return;
            }
            MaeRefp.CODREF_REF = txtCodRefCop.Text;
            if (MaeRefp.existe() == false)
            {
                FRMBuscarCol frm = new FRMBuscarCol();
                frm.RequiereColor = false;
                frm.EsReferencia = true;
                frm.txtNombre.Text = txtCodRefCop.Text;
                frm.btnAceptar.Visibility = Visibility.Hidden;
                frm.ShowDialog();
                txtCodRefCop.Text = frm.Retorno;
            }
            MaeRef.CODREF_REF = txtCodRefCop.Text;
            MaeRef.Consultar();
            txtNomRefCop.Text = MaeRef.NOMREF_REF;
            MaePro.CODREF_PRO = txtCodRefCop.Text;
            dt = MaePro.BuscarColor();
            if (dt.Rows.Count == 0)
            {
                MessageBox.Show("La referencia no tiene colores disponibles!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                txtCodRef.Text = "";
                return;
            }
            cbColorCop.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                cbColorCop.Items.Add(dt.Rows[i][0].ToString() + "-" + dt.Rows[i][1].ToString());
            }

        }

        private void cbColor_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (txtCodRef.Text == "")
            {
                return;
            }

            if (cbColor.SelectedValue == null)
            {
                return;
            }
            if (cbColor.SelectedValue.ToString().Equals(""))
            {
                return;
            }
            if (cbColor.SelectedIndex == 0)
            {
                StrCodigoPrimerColorReferencia = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedValue.ToString(),"-","Codigo");
            }
            
            PrivV_BuscarDatosReferencia(cbColor.SelectedValue.ToString().Substring(0, 2));//FJRF - se buscan los datos de la referencia enviando el codigo del color
        }
        
        private void PrivV_BuscarDatosReferencia(string StrCodigoColor)//FJRF - Este procedimiento busca los datos que se llenaran en el grid con los datos de las referencias
        {
            MaeEst.CODREF_EST = txtCodRef.Text;
            MaeEst.CODCOL_EST = StrCodigoColor;

            PonerImagen(MaeEst.CODREF_EST, MaeEst.CODCOL_EST, txtNombreRef.Text);

            dtEst.Rows.Clear();
            dtEst.Clear();
            dgEst.ItemsSource = null;

            dtEst = MaeEst.Consultar();
            
            dgEst.ItemsSource = dtEst.DefaultView;
            dgEst.Columns[dtEst.Columns.Count - 1].Width = 0;
            for (int i = 0; i < dtEst.Rows.Count; i++)
            {
                for (int j = 6; j < dtEst.Columns.Count - 1; j++)
                {
                    MaeEst.CODTAL_EST = dtEst.Columns[j].ColumnName; //dtEst.Rows[0][j].ToString();
                    MaeEst.CODMTP_EST = dtEst.Rows[i][0].ToString();

                    if (MaeEst.CantidadEstandar() > 0)
                    {
                        dtEst.Rows[i][j] = MaeEst.CantidadEstandar();
                    }
                }
                if (dtEst.Rows[i][3].ToString() != "")
                {
                    Uni.CODUNI_EUN = dtEst.Rows[i][3].ToString();
                    Uni.Consultar();
                    dtEst.Columns[3].ReadOnly = false;
                    dtEst.Rows[i][3] = Uni.NOMUNI_EUN;
                    dtEst.Columns[3].ReadOnly = true;
                }
                if (dtEst.Rows[i][4].ToString() != "")
                {
                    Uni.CODUNI_EUN = dtEst.Rows[i][4].ToString();
                    Uni.Consultar();
                    dtEst.Columns[4].ReadOnly = false;
                    dtEst.Rows[i][4] = Uni.NOMUNI_EUN;
                    dtEst.Columns[4].ReadOnly = true;
                }

                dtEst.Rows[i][dtEst.Columns.Count - 1] = MaeEst.Detalle();

                if (MaeEst.Tipo() == "P")
                {
                    dtEst.Rows[i][5] = true;
                }
                else
                {
                    dtEst.Rows[i][5] = false;
                }
            }
            dtEst.Rows.Add();
            dgEst.Columns[1].Width = 270;
            dgEst.Columns[2].Width = 150;
            dgEst.Columns[dtEst.Columns.Count - 1].Width = 145;
        }
        
        private void btnAceptar_Click(object sender, RoutedEventArgs e)
        {
            if (txtCodRefCop.Text == "")
                return;

            if (cbColorCop.SelectedValue == null)
                return;

            if (MaeRef.TallajeRef(txtCodRef.Text) != MaeRef.TallajeRef(txtCodRefCop.Text))
            {
                MessageBox.Show("El tallaje de las referencias deben ser iguales", "Estándares", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            MaeEst.CODREF_EST = txtCodRefCop.Text;
            MaeEst.CODCOL_EST = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColorCop.SelectedValue.ToString(),"-","Codigo");
            dtEst = MaeEst.Consultar();
            dgEst.ItemsSource = dtEst.DefaultView;
            dgEst.Columns[dtEst.Columns.Count - 1].Width = 0;
            for (int i = 0; i < dtEst.Rows.Count; i++)
            {
                for (int j = 6; j < dtEst.Columns.Count-1; j++)
                {
                    MaeEst.CODTAL_EST = dtEst.Columns[j].ColumnName; //dtEst.Rows[0][j].ToString();
                    MaeEst.CODMTP_EST = dtEst.Rows[i][0].ToString();

                    if (MaeEst.CantidadEstandar() > 0)
                    {
                        dtEst.Rows[i][j] = MaeEst.CantidadEstandar();
                    }
                }
                if (dtEst.Rows[i][3].ToString() != "")
                {
                    Uni.CODUNI_EUN = dtEst.Rows[i][3].ToString();
                    Uni.Consultar();
                    dtEst.Columns[3].ReadOnly = false;
                    dtEst.Rows[i][3] = Uni.NOMUNI_EUN;
                    dtEst.Columns[3].ReadOnly = true;
                }
                if (dtEst.Rows[i][4].ToString() != "")
                {
                    Uni.CODUNI_EUN = dtEst.Rows[i][4].ToString();
                    Uni.Consultar();
                    dtEst.Columns[4].ReadOnly = false;
                    dtEst.Rows[i][4] = Uni.NOMUNI_EUN;
                    dtEst.Columns[4].ReadOnly = true;
                }

                dtEst.Rows[i][dtEst.Columns.Count - 1] = MaeEst.Detalle();

                if (MaeEst.Tipo() == "P")
                {
                    dtEst.Rows[i][5] = true;
                }
                else
                {
                    dtEst.Rows[i][5] = false;
                }
                
            }
        }

        private void btnBuscarRef_Click(object sender, RoutedEventArgs e)
        {
            FRMBuscarCol frm = new FRMBuscarCol();
            frm.RequiereColor = false;
            frm.EsReferencia = true;
            frm.txtNombre.Text = txtCodRef.Text;
            frm.btnAceptar.Visibility = Visibility.Visible;
            frm.ShowDialog();
            if (!String.IsNullOrEmpty(frm.Retorno))
            {
                txtCodRef.Text = frm.Retorno.Substring(0, 4);
            }
        }

        private Boolean YaEstaEnGrid(string Ref, int fila)
        {
            for (int i = 0; i < dtEst.Rows.Count; i++)
            {
                if (i != fila)
                {
                    if (dtEst.Rows[i][0].ToString() == Ref)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private void dgEst_LostFocus(object sender, RoutedEventArgs e)
        {
            //int i = dgEst.SelectedIndex;

            //if (i == -1)
            //{
            //    return;
            //}

            //if (dgEst.CurrentCell.Column == null)
            //{
            //    return;
            //}

            //int j = dgEst.CurrentCell.Column.DisplayIndex;


            //if (j == 0)
            //{
            //    if (i > dtEst.Rows.Count-1 )
            //    {
            //        return;
            //    }
            //    if (dtEst.Rows[i][0].ToString() == "")
            //    {
            //        return;
            //    }
            //    if (dtEst.Rows[i][0].ToString().Trim() != "" && dtEst.Rows[i][0].ToString().Length == 10)
            //    {
                    //if (YaEstaEnGrid(dtEst.Rows[i][0].ToString(),i))
                    //{
                    //    MessageBox.Show("El material ya ha sido registrado!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                    //    dtEst.Rows[i][0] = "";
                    //    return;
                    //}
                    //MaeMtp.CODMAT_MTP = dtEst.Rows[i][0].ToString().Substring(0, 6);
                    //MaeMtp.CODCOL_MTP = dtEst.Rows[i][0].ToString().Substring(6, 4);
                    //MaeMtp.ConsultaMaterial();
                    //if (MaeMtp.existe())
                    //{
                    //    MaeMat.CODMAT_MAT = MaeMtp.CODMAT_MTP;
                    //    MaeMat.Consultar();
                    //    dtEst.Columns[1].ReadOnly = false;
                    //    dtEst.Rows[i][1] = MaeMtp.NOMMATERIAL;
                    //    dtEst.Columns[1].ReadOnly = true;

                    //    dtEst.Columns[2].ReadOnly = false;
                    //    dtEst.Rows[i][2] = MaeMtp.NOMCOLOR;
                    //    dtEst.Columns[2].ReadOnly = true;

                    //    dtEst.Columns[3].ReadOnly = false;
                    //    dtEst.Columns[4].ReadOnly = false;

                    //    Uni.CODUNI_EUN = MaeMat.UNIUSU_MAT;
                    //    Uni.Consultar();
                    //    dtEst.Rows[i][3] = Uni.NOMUNI_EUN;
                    //    Uni.CODUNI_EUN = MaeMat.UNICOM_MAT;
                    //    Uni.Consultar();
                    //    dtEst.Rows[i][4] = Uni.NOMUNI_EUN;

                    //    dtEst.Columns[1].ReadOnly = true;
                    //    dtEst.Columns[2].ReadOnly = true;
                    //    dtEst.Columns[3].ReadOnly = true;
                    //    dtEst.Columns[4].ReadOnly = true;
                    //}
                    //else
                    //{
                    //    MessageBox.Show("El material no existe!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                    //    dtEst.Rows[i][0] = "";
                    //    return;
                    //}
            //    }
            //}
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Keyboard.Focus(txtCodRef);
        }

        private void dgEst_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            int IntCulomna = dgEst.CurrentCell.Column.DisplayIndex;

            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                
                if (IntCulomna != 0)
                {
                    elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
                }
            }
        }

        //------------------------------------------------------------------------------
        private void dgEst_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
        {
            try
            {
                string StrDatos1;
                int i = dgEst.SelectedIndex;
                int IntCulomna = dgEst.CurrentCell.Column.DisplayIndex;
                DataGridCell cell = DataGridHelper.GetCell(dgEst, dgEst.SelectedIndex, 0);
                if (IntCulomna == 0)
                {
                    StrDatos1 = cell.ToString().Replace("System.Windows.Controls.DataGridCell:", "").Trim();

                    if (cell != null)
                    {
                        if (e.Key == Key.Enter)
                        {
                            if (StrDatos1 == "System.Windows.Controls.DataGridCell")
                                StrDatos1 = "";

                            if (StrDatos1.Length == 10)
                            {
                                MaeMtp.CODMAT_MTP = StrDatos1.Substring(0, 6);
                                MaeMtp.CODCOL_MTP = StrDatos1.Substring(6, 4);
                                MaeMtp.ConsultaMaterial();
                                if (MaeMtp.EXISTE)
                                {
                                    dtEst.Rows[i][0] = "";
                                    if (!EnviarDatosAlGrid(dtEst, i, StrDatos1, MaeMtp.NOMCOLOR, MaeMtp.NOMMATERIAL)) 
                                    {
                                        dgEst.CurrentCell = new DataGridCellInfo(dgEst.Items[i], dgEst.Columns[6]);
                                        dgEst.BeginEdit();
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("El material ingresado no existe.", "Código o Color no existe", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                                    FRMBuscarCol frm = new FRMBuscarCol();
                                    frm.EsReferencia = false;
                                    frm.RequiereColor = true;
                                    //frm.txtNombre.Text = StrDatos1;
                                    frm.ShowDialog();

                                    if (!String.IsNullOrEmpty(frm.Retorno))
                                    {
                                        MaeMtp.CODMAT_MTP = frm.Retorno.Substring(0, 6);
                                        MaeMtp.CODCOL_MTP = frm.Retorno.Substring(6, 4);
                                        MaeMtp.ConsultaMaterial();
                                        if (!EnviarDatosAlGrid(dtEst, i, frm.Retorno, MaeMtp.NOMCOLOR, MaeMtp.NOMMATERIAL))
                                        {
                                            dgEst.CurrentCell = new DataGridCellInfo(dgEst.Items[i], dgEst.Columns[6]);
                                            dgEst.BeginEdit();
                                        }
                                    }
                                }
                            }
                            else
                            {
                                FRMBuscarCol frm = new FRMBuscarCol();
                                frm.EsReferencia = false;
                                frm.RequiereColor = true;
                                //frm.txtNombre.Text = StrDatos1;
                                frm.ShowDialog();

                                if (!String.IsNullOrEmpty(frm.Retorno))
                                {
                                    MaeMtp.CODMAT_MTP = frm.Retorno.Substring(0, 6);
                                    MaeMtp.CODCOL_MTP = frm.Retorno.Substring(6, 4);
                                    MaeMtp.ConsultaMaterial();
                                    if (!EnviarDatosAlGrid(dtEst, i, frm.Retorno.Substring(0, 10), MaeMtp.NOMCOLOR, MaeMtp.NOMMATERIAL))
                                    {
                                        dgEst.CurrentCell = new DataGridCellInfo(dgEst.Items[i], dgEst.Columns[6]);
                                        dgEst.BeginEdit();
                                    }
                                }

                            }
                        }

                        if (e.Key == Key.F2)
                        {
                            if (StrDatos1 == "System.Windows.Controls.DataGridCell")
                                StrDatos1 = "";

                            FRMBuscarCol frm = new FRMBuscarCol();
                            frm.EsReferencia = false;
                            frm.RequiereColor = true;
                            //frm.txtNombre.Text = StrDatos1;
                            frm.ShowDialog();

                            if (!String.IsNullOrEmpty(frm.Retorno))
                            {
                                MaeMtp.CODMAT_MTP = frm.Retorno.Substring(0, 6);
                                MaeMtp.CODCOL_MTP = frm.Retorno.Substring(6, 4);
                                MaeMtp.ConsultaMaterial();
                                if (MaeMtp.EXISTE)
                                {
                                    if (!EnviarDatosAlGrid(dtEst, i, frm.Retorno.Substring(0, 10), MaeMtp.NOMCOLOR, MaeMtp.NOMMATERIAL))
                                    {
                                        dgEst.CurrentCell = new DataGridCellInfo(dgEst.Items[i], dgEst.Columns[6]);
                                        dgEst.BeginEdit();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        
        private Boolean EnviarDatosAlGrid(DataTable DtGrid, int IntPosicion,String StrDatosRetormados, string strNombreColor, string strNombreMaterial)
        {
            string StrDatoRecibido = StrDatosRetormados;
            if (String.IsNullOrEmpty(StrDatoRecibido) == true)//FJRF - Verificamos que el dato devuelto tenga datos
            {
                StrDatoRecibido = "";//FJRF - Si viene nulo o vacio hacemos lo siguiente
            }
            if (YaEstaEnGrid(StrDatoRecibido, IntPosicion))
            {
                DtGrid.Rows[IntPosicion][0] = "";
                DtGrid.Columns[1].ReadOnly = false;
                DtGrid.Rows[IntPosicion][1] = "";
                DtGrid.Columns[1].ReadOnly = true;

                DtGrid.Columns[2].ReadOnly = false;
                DtGrid.Rows[IntPosicion][2] = "";
                DtGrid.Columns[2].ReadOnly = true;

                DtGrid.Columns[3].ReadOnly = false;
                DtGrid.Rows[IntPosicion][3] = "";
                DtGrid.Columns[3].ReadOnly = true;

                DtGrid.Columns[4].ReadOnly = false;
                DtGrid.Rows[IntPosicion][4] = "";
                DtGrid.Columns[4].ReadOnly = true;

                DtGrid.Rows[IntPosicion][5] = false;//FJRF - quitamos el check

                dgEst.ItemsSource = DtGrid.DefaultView;

                MessageBox.Show("El material ya fue ingresado!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                return true;
            }
            else
            {
                DtConsulta = new DataTable();

                DtGrid.Rows[IntPosicion][0] = StrDatosRetormados;

                DtGrid.Columns[1].ReadOnly = false;
                DtGrid.Rows[IntPosicion][1] = strNombreMaterial;
                DtGrid.Columns[1].ReadOnly = true;

                DtGrid.Columns[2].ReadOnly = false;
                DtGrid.Rows[IntPosicion][2] = strNombreColor;
                DtGrid.Columns[2].ReadOnly = true;

                DtConsulta = MdoGeneral.consulta("select (select NOMUNI_EUN from ENCUNIP where CODUNI_EUN=uniusu_mat) as NombreUso,(select NOMUNI_EUN from ENCUNIP where CODUNI_EUN=unicom_mat) as NombreCompra from MAEMAT where codmat_mat = substr('" + DtGrid.Rows[IntPosicion][0].ToString().Trim() + "',1,6)");

                if (DtConsulta.Rows.Count > 0)
                {
                    DtGrid.Columns[3].ReadOnly = false;
                    DtGrid.Rows[IntPosicion][3] = DtConsulta.Rows[0][0].ToString();
                    DtGrid.Columns[3].ReadOnly = true;

                    DtGrid.Columns[4].ReadOnly = false;
                    DtGrid.Rows[IntPosicion][4] = DtConsulta.Rows[0][1].ToString();
                    DtGrid.Columns[4].ReadOnly = true;

                    DtGrid.Rows[IntPosicion][5] = true;//FJRF - ponemos el check
                }

                DtGrid.Rows.Add();

                return false;
            }
        }
        
        private void btnCrearMat_Click(object sender, RoutedEventArgs e)
        {
            FRMMatMatp frm = new FRMMatMatp();
            frm.ShowDialog();
        }

        private void btnGrabar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (txtCodRef.Text == "")
                {
                    MessageBox.Show("Debe ingresar una referencia!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                    return;
                }
                if (cbColor.SelectedIndex == -1)
                {
                    MessageBox.Show("Debe seleccionar un color!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                    return;
                }

                bool HayRegEnGrid = false;
                for (int i = 0; i < dtEst.Rows.Count; i++)
                {
                    if (dtEst.Rows[i][0].ToString() != "")
                        HayRegEnGrid = true;
                }
                if (HayRegEnGrid == false)
                {
                    MessageBox.Show("No hay materiales registrados!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                    return;
                }

                MaeEst.CODREF_EST = txtCodRef.Text;
                MaeEst.CODCOL_EST = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.Text, "-", "Codigo");
                MaeEst.Grabar(dtEst);
                LimpiarControles();
                txtCodRef.Text = "";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void CopiarColumna_Click(object sender, RoutedEventArgs e)
        {
            if (dgEst.CurrentCell.Column == null)
            {
                return;
            }

            int j = dgEst.CurrentCell.Column.DisplayIndex;

            if (j < 6)
                return;

            for (int i = 0; i < dtEst.Rows.Count; i++)
            {
                if (dtEst.Rows[i][0].ToString()!= "")
                {
                    dtEst.Rows[i][j + 1] = dtEst.Rows[i][j];
                }
            }
            
        }

        private void CopiarFila_Click(object sender, RoutedEventArgs e)
        {
            int i = dgEst.SelectedIndex;

            if (i == -1)
            {
                return;
            }

            if (dtEst.Rows[i][0].ToString() != "" && dtEst.Rows[i + 1][0].ToString() != "")
            {
                for (int j = 6; j < dtEst.Columns.Count-1; j++)
                {
                    dtEst.Rows[i + 1][j] = dtEst.Rows[i][j];
                }
            }
        }

        private void Calculadora_Click(object sender, RoutedEventArgs e)
        {
            Process Proceso = new Process();
            Proceso.StartInfo.FileName = "calc.exe";
            Proceso.StartInfo.Arguments = "";
            Proceso.Start();
        }

        private void EliminarFila_Click(object sender, RoutedEventArgs e)
        {
            int i = dgEst.SelectedIndex;

            if (i == -1)
            {
                return;
            }

            MessageBoxResult logResult = MessageBox.Show("Esta seguro que desea eliminar el registro?", "Borrar registro", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
            if (logResult == MessageBoxResult.Yes)
            {
                dtEst.Rows[i].Delete();
            }

        }

        private void VerMaterial_Click(object sender, RoutedEventArgs e)
        {
            int i = dgEst.SelectedIndex;

            if (i == -1)
            {
                return;
            }

            FRMVerMaterial ver = new FRMVerMaterial();
            ver.txtCodMat.Text = dtEst.Rows[i][0].ToString().Substring(0, 6);
            ver.txtCodCol.Text = dtEst.Rows[i][0].ToString().Substring(6, 4);
            ver.txtNomMat.Text = dtEst.Rows[i][1].ToString();
            ver.txtNomCol.Text = dtEst.Rows[i][2].ToString();
            ver.consultar();
            ver.ShowDialog();
       
        }

        private void txtDetalle_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtDetalle.Text != "")
                {
                    int i = dgEst.SelectedIndex;
                    if (i == -1)
                    {
                        return;
                    }
                    if (dtEst.Rows[i][0].ToString() != "")
                    {
                        dtEst.Rows[i][dtEst.Columns.Count - 1] = txtDetalle.Text;
                    }
                }
            }
        }

        private void btnEliminar_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Está seguro de eliminar la información del estándar para esta referencia?","Estándar",MessageBoxButton.YesNo,MessageBoxImage.Question)==MessageBoxResult.Yes)
            {                
                MaeEst.CODREF_EST=txtCodRef.Text;
                MaeEst.CODCOL_EST=cbColor.Text.Substring(0,2);
                MaeEst.Eliminar();
                LimpiarControles();
                txtCodRef.Text="";
            }
        }

        private void dgEst_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dgEst.SelectedIndex > -1)
            {
                if (dgEst.Columns[dtEst.Columns.Count - 1] == null)
                {
                    return;
                }

                if (dgEst.SelectedIndex > dtEst.Rows.Count - 1)
                {
                    return;
                }

                txtObs.Text = dtEst.Rows[dgEst.SelectedIndex][dtEst.Columns.Count - 1].ToString();
            }
        }

        private void txtCodRef_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodRef.Text.Length > 5)
                {
                    FRMBuscarCol frm = new FRMBuscarCol();
                    frm.EsReferencia = true;
                    frm.RequiereColor = false;
                    frm.txtNombre.Text = txtCodRef.Text;
                    frm.ShowDialog();
                    if (!String.IsNullOrEmpty(frm.Retorno))
                    {
                        txtCodRef.Text = frm.Retorno.Substring(0, 4);
                    }
                }
            }
        }

        private void btnBuscaReferencia_Click(object sender, RoutedEventArgs e)
        {
            FRMBuscarCol frm = new FRMBuscarCol();
            frm.RequiereColor = false;
            frm.EsReferencia = true;
            frm.txtNombre.Text = txtCodRefCop.Text;
            frm.btnAceptar.Visibility = Visibility.Hidden;
            frm.ShowDialog();
            if (!String.IsNullOrEmpty(frm.Retorno))
            {
                txtCodRefCop.Text = frm.Retorno.Substring(0, 4);
            }
        }

        #region ParaObtenerLasPropiedadesDeLaCeldaDelGrid
        static class DataGridHelper
        {
            static public DataGridCell GetCell(DataGrid dg, int row, int column)
            {
                DataGridRow rowContainer = GetRow(dg, row);

                if (rowContainer != null)
                {
                    DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);

                    // try to get the cell but it may possibly be virtualized
                    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
                    if (cell == null)
                    {
                        // now try to bring into view and retreive the cell
                        dg.ScrollIntoView(rowContainer, dg.Columns[column]);
                        cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
                    }
                    return cell;
                }
                return null;
            }

            static public DataGridRow GetRow(DataGrid dg, int index)
            {
                DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
                if (row == null)
                {
                    // may be virtualized, bring into view and try again
                    dg.ScrollIntoView(dg.Items[index]);
                    row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
                }
                return row;
            }

            static T GetVisualChild<T>(Visual parent) where T : Visual
            {
                T child = default(T);
                int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
                for (int i = 0; i < numVisuals; i++)
                {
                    Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
                    child = v as T;
                    if (child == null)
                    {
                        child = GetVisualChild<T>(v);
                    }
                    if (child != null)
                    {
                        break;
                    }
                }
                return child;
            }
        }
        #endregion

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }

        private void imgFoto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {

            //Para llamar el PDF de la ficha tecnica de la referencia
            if (File.Exists(MDOgeneral.Fotos_BOSI + txtCodRef.Text.Trim() + ".PDF"))
            {
                //MessageBox.Show("Si existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Hand, MessageBoxResult.OK);
                String fileName = MDOgeneral.Fotos_BOSI + txtCodRef.Text.Trim() + ".PDF";
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                process.StartInfo.FileName = fileName;
                process.Start();
            }
            else
            {
                MessageBox.Show("No existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
            }
        }

    }
}